The xc_ptrace API relies on errno for passing success/failure
indication back to callers. However, mapping operations that fall
back on legacy APIs may leave errno set to a non-zero result even
thought the operation is successful. This patch resets errno after
successful map operations so that xc_ptrace doesn't inadvertently
return a failure.
Signed-off-by: Justin Gibbs <gibbs@scsiguy.com>
if (map == NULL)
return NULL;
+ /*
+ * Due to the use of API fallback code in libxc, errno may
+ * be clobberred during successful operations. Since the caller
+ * of xc_ptrace is depending on errno for return status, clear
+ * errno here.
+ */
+ errno = 0;
return map + (va & ~PAGE_MASK);
}